package jdklearning;


import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//import it.sauronsoftware.jave.Encoder;
//import it.sauronsoftware.jave.MultimediaInfo;

public class Dtest {
	
	public static final ExecutorService es = Executors.newFixedThreadPool(5);



	public static void main(String[] args) {
		 Dtest dtest = new Dtest();

//		List<String> lll=null;
//		for(String s:lll){
//			
//			System.out.println(s);
//		}
//		System.out.println(lll.size());
//		System.out.println(lll.get(0));
		
//		List<String> lll = new ArrayList<>();
//		lll.add("a");
//		lll.add("b");
//		String[] dtest = lll.toArray(new String[lll.size()]);
//		System.out.println(dtest.length);
//		
//		Date d=new Date();
//		Calendar c =Calendar.getInstance();
//		c.set(Calendar.HOUR, 0);
//		c.set(Calendar.MINUTE, 0);
//		c.set(Calendar.SECOND, 0);
//		
//		long passed = System.currentTimeMillis() - c.getTime().getTime();
//		System.out.println(passed/1000);
		
		

		
//		BigDecimal a=BigDecimal.ZERO;
//		System.out.println(BigDecimal.ZERO.divide(a,10,BigDecimal.ROUND_HALF_DOWN));
		
		
//		System.out.println(new Timestamp(System.currentTimeMillis()).toString());;
//		
//		TreeMap<String, String> parameterMap=new TreeMap<>();
//		parameterMap.put("z", "Z");
//		parameterMap.put("a", "A");
//		Iterator it = parameterMap.keySet().iterator();
//		while (it.hasNext()) {
//			System.out.println(parameterMap.get(it.next()));
//		}
//		
//		System.out.println(new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").format(new Date()));
//		
//		System.out.println(new BigDecimal(2.12).setScale(3, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(2)));
//		
//		System.out.println(new ddd().a);
//		ddd s=new ddd();
//		s.b=null;
//		System.out.println(s.b);
//		
//		System.out.println("aaaa".split("\\|").length);
//		
//		System.out.println(new Date(1500370080000L));
		
//		ArrayList<Long> dsd=new ArrayList<>();
//				dsd.add(new Long(1));
//				System.out.println(dsd.contains(new Long(1L)));
//				
//				ddd s=new ddd();
//				if(s.a){
//					System.out.println();
//				}
		
//		try {
//			MessageDigest md=MessageDigest.getInstance("SHA-256");
//			byte[] arr1=new byte[]{1,2,3};
//			byte[] arr2 = md.digest(arr1);
//			System.out.println(arr2.length);
//			System.out.println(arr2);
//		} catch (NoSuchAlgorithmException e) {
//			e.printStackTrace();
//		}
//		
//		BigDecimal b1=new BigDecimal(1.0);
//		BigDecimal b2=new BigDecimal(1).setScale(5, BigDecimal.ROUND_HALF_UP);
//		System.out.println(b1.compareTo(b2));
//		
//		
//		try {
//			Context ctx=new InitialContext();
//			Map env = ctx.getEnvironment();
//			for(Object key : env.keySet()){
//				System.out.println(key);
//				System.out.println(env.get(key));
//			}
//		} catch (NamingException e) {
//			e.printStackTrace();
//		}
		
//		Double dd= Double.valueOf("1219.86");  
//		BigDecimal bigD = new BigDecimal(dd);  
//		MathContext mc = new MathContext(4,RoundingMode.HALF_UP);  
//		//4表示取四位有效数字，RoundingMode.HALF_UP表示四舍五入  
//		bigD= bigD.multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);  
//		Long result = bigD.longValue();  
//		System.out.println(result);
//		
//		
//		BlockingQueue queue = new ArrayBlockingQueue(1024);  
//		  
//        Producer producer = new Producer(queue);  
//        Consumer consumer = new Consumer(queue);  
//  
//        new Thread(producer).start();  
//        new Thread(consumer).start();  
//  
//        try {
//			Thread.sleep(4000);
//		} catch (InterruptedException e) {
//			e.printStackTrace();
//		}  
//        
//        
//        
//        
//        ExecutorService executorService = Executors.newSingleThreadExecutor();  
//        
//        Set<Callable<String>> callables = new HashSet<Callable<String>>();  
//          
//        callables.add(new Callable<String>() {  
//            public String call() throws Exception {  
//                return "Task 1";  
//            }  
//        });  
//        callables.add(new Callable<String>() {  
//            public String call() throws Exception {  
//                return "Task 2";  
//            }  
//        });  
//        callables.add(new Callable<String>() {  
//            public String call() throws Exception {  
//                return "Task 3";  
//            }  
//        });  
//          
//        String result1="";
//		try {
//			result1 = executorService.invokeAny(callables);
//		} catch (InterruptedException | ExecutionException e) {
//			e.printStackTrace();
//		}  
//          
//        System.out.println("result = " + result1);  
//        executorService.shutdown();
		
//		System.out.println(System.getProperty("java.class.path"));
		
//		MySecurityManager mm = new MySecurityManager();
//		System.out.println(mm.getSecurityContext());
		
//		ThreadLocal<Object> aaa=new ThreadLocal<>();
//		aaa.set(new Dtest());
//		InheritableThreadLocal i=new InheritableThreadLocal<>();
//		
//		ThreadLocal a1 = new ThreadLocal(){
//				@Override
//	            protected Object initialValue() {
//					return "xiezhaodong";
//				}
//        };
//		new Thread(new Runnable() {
//			
//			@Override
//			public void run() {
//				// TODO Auto-generated method stub
//				System.out.println(a1.get());
//			}
//		}).start();
		
//		System.out.println(File.separator);
//		System.out.println(File.separatorChar);
//		System.out.println(File.pathSeparator);
//		System.out.println(File.pathSeparatorChar);
//		System.out.println("asd.dsa".substring("asd.dsa".lastIndexOf('.')));
		
		
//		 Person p1 =  dtest.mockUpload();
//		 Person p2 =  dtest.mockUpload();
//		System.out.println(p1.getId());
//		System.out.println(p1.getName());
//		System.out.println(p2.getId());
//		System.out.println(p2.getName());
//		 System.out.println(new Long(1).longValue()==new Long(1));
		 
//		 List<Integer> list = new ArrayList<>();
//		 list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);
//		 Iterator<Integer> it = list.iterator();
//		 while(it.hasNext()){
//			 int i = it.next();
//			 if(i %2 ==0){
//				 it.remove();
//			 }
//		 }
//		 for(int i:list){
//			 System.out.println(i);
//		 }
		 
		 
//		 Calendar currTime = Calendar.getInstance();
//			System.out.println(currTime.get(Calendar.YEAR));
//			System.out.println(currTime.get(Calendar.MONTH));
//			System.out.println(currTime.get(Calendar.DAY_OF_MONTH));
		 
//		 try {
//			Date t = new SimpleDateFormat("HH:mm:ss").parse("22:20:10");
//			System.out.println(t);
//			System.out.println(t.getTime());
//			System.out.println(new Date().getTime());
//		} catch (ParseException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		
//		  File source = new File("D:\\test1\\1.mp4");
//	        Encoder encoder = new Encoder();
//	        try {
//	             MultimediaInfo m = encoder.getInfo(source);
//	             long ls = m.getDuration();
////	             System.out.println("此视频时长为:"+ls/60000+"分"+(ls`000)/1000+"秒！");
//	             System.out.println(ls);
//	        } catch (Exception e) {
//	            e.printStackTrace();
//	        }
		 
//		 Map<String, Person> test = new HashMap<>();
//		 Person p =new Person();
//		 p.setName("aaa");
//		 test.put("1", p);
//		 test.put("2", p);
//		 
//		 p.setName("bbb");
//		 System.out.println(test.get("2").getName());
//		 
//		 Integer i1 = 100,i2 = 100;  
//		 System.out.println(i1==i2);  
//		 Integer i3 = 1000,i4 = 1000;  
//		 System.out.println(i3==i4);
		 
//		 try {
//			Registry registry = LocateRegistry.createRegistry(8999);
//			registry.bind("aaa", new TestInterface() {
//				
//				@Override
//				public String aaa() throws RemoteException {
//					return "aaa";
//				}
//			});
//			TestInterface testInterface = new TestInterfaceImpl();
//			LocateRegistry.createRegistry(12312);
//			Naming.bind("rmi://192.168.1.70:12312/testInterface", testInterface);
//		} catch (RemoteException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (AlreadyBoundException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (MalformedURLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}

	}
	
	public Person mockUpload(){
		final Person p =new Person();
		p.setId(new Random(System.currentTimeMillis()).nextInt());
		es.execute(new Runnable() {
			@Override
			public void run() {
				try {
					Thread.sleep(5000);
					p.setName("aaa");
				} catch (InterruptedException e) {
					
				}
			}
		});
		return p;
	}
	

}
abstract class Inner{
	abstract  <T> T  method();
}

class Ddd{
	public boolean a;
	
	public Boolean b;
}


class Person{
	private Integer id;
	
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


class Producer implements Runnable{  
	  
    protected BlockingQueue queue = null;  
  
    public Producer(BlockingQueue queue) {  
        this.queue = queue;  
    }  
  
    public void run() {  
        try {  
        	for(int i=0;i<10;i++){
        		queue.put(i);  
                Thread.sleep(1000); 
        	}
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
}

class Consumer implements Runnable{
	  
    protected BlockingQueue queue = null;  
  
    public Consumer(BlockingQueue queue) {  
        this.queue = queue;  
    }  
  
    public void run() {  
        try {
        	while(true){
        		System.out.println(queue.take());
        	}
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
}  


class MySecurityManager extends SecurityManager{  
	  
    
} 